1
遺傳算法導論:標準與實數編碼框架
WU-SCI1005Lecture 2
00:00

遺傳算法(GAs)是一種基於自然演化原理的隨機全域搜尋啟發式方法,特別是達爾文主義的「適者生存」與基因重組原則。

1. 表示框架

  • 標準遺傳算法(Canonical GAs):使用二進位或格雷碼字串表示法來編碼決策變數。
  • 實數編碼遺傳算法(RCGAs):直接操作浮點向量,對於連續優化問題通常更高效。

2. 進化循環

一種反覆進行評估、選擇與繁殖的迭代過程。一個關鍵概念是區分 基因型(編碼後的位元字串/染色體)與 表現型(實際問題空間中解碼後的決策變數值)。

從二進位字串映射至實數值 $x \in [a, b]$ 的公式如下:

$$x = a + \frac{decimal\_value \times (b - a)}{2^L - 1}$$

其中 $L$ 為染色體的位元長度。

漢明斷崖
請留意標準二進位編碼中的 漢明斷崖——即相鄰的十進位數字(如 7 和 8)具有截然不同的二進位位元模式(0111對比1000),這使得遺傳算法難以執行局部搜尋。
Python 實作:二進位轉實數解碼
問題 1
為什麼格雷碼在遺傳算法中常被優先於標準二進位碼使用?
它需要較少記憶體來儲存染色體。
它確保相鄰的數值僅相差一位元(相鄰性質)。
它會自動將值歸一化至 0 到 1 之間。
它自然地提高了突變率。
問題 2
如果突變機率(p)設得過高(例如:p = 0.5),可能的結果是什麼?
該算法會立即收斂至全域最佳解。
遺傳算法表現得如同隨機搜尋。
案例研究:橋梁組件優化
請閱讀以下情境並回答問題。
您正在優化一座橋梁組件的設計,其中決策變數為「材質厚度」。

  • 厚度必須介於 0.0mm10.23mm之間。
  • 您使用的是標準遺傳算法,採用 10 位元的二進位字串表示法。
Q
1. 若某個體的染色體為0000000000,其解碼後的厚度是多少?
答案:0.0mm
二進位字串 0000000000 在十進位中等於 0。使用公式 $x = a + \frac{decimal \times (b-a)}{2^L - 1}$,可得 $0.0 + \frac{0 \times (10.23 - 0.0)}{1023} = 0.0$。
Q
2. 計算此 10 位元設定下的搜尋精確度(厚度可能最小的變化量)。
答案:0.01mm
精確度定義為範圍除以最大可能的十進位值。$\frac{10.23 - 0}{2^{10} - 1} = \frac{10.23}{1023} = 0.01mm$。
Q
3. 在選擇過程中,個體 A 的適應度為 10,個體 B 的適應度為 30。使用輪盤賭選擇法,選中 B 的機率是多少?
答案:75%
總適應度 = $10 + 30 = 40$。選中 B 的機率 = $\frac{30}{40} = 0.75$,即 75%。(比例為 3:1)。